package com.lagou.server;


import com.lagou.model.UserMessage;

import java.io.IOException;

public class ServerView {

    /**
     * 使用合成复用原则
     */
    private ServerInitClose sic;
    private ServerDao sd;

    public ServerView(ServerInitClose sic, ServerDao sd) {
        this.sic = sic;
        this.sd = sd;
    }

    /**
     * 服务器接收信息
     */
    public int serverReceive() throws IOException, ClassNotFoundException {
        UserMessage tum = (UserMessage)sic.getOis().readObject();
        System.out.println("接收到的学员消息是："+tum);

        //管理员账号和密码信息的校验，返回给客户端信息
        if ("managerCheck".equals(tum.getType())){
            if (sd.serverManagerCheck(tum.getUser())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }


        //增加学生信息，返回给客户端信息
        if("addStudent".equals(tum.getType())){
            if (sd.serverAddStudent(tum.getUser())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }


        //删除学生信息，返回给客户端信息
        if("deleteStudent".equals(tum.getType())){
            if (sd.serverDeleteStudent(tum.getUser())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }


        //退出系统
        if("quit".equals(tum.getType())){
            sd.serverQuit();
            return -1;
        }


        //修改学生信息，返回给客户端信息
        if("modifyStudent".equals(tum.getType())){
            if (sd.serverModifyStudent(tum.getUser())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }


        //查询信息，返回给客户端信息
        if("queryStudent".equals(tum.getType())){
            if (sd.serverStudentQuery(tum.getUser())!= null){
                tum.setType("success");
                tum.setUser(sd.serverStudentQuery(tum.getUser()));
            }else{
                tum.setType("fail");
            }
        }
        //增加考题，返回给客户端信息
        if ("addExam".equals(tum.getType())){
            if (sd.serverAddExamQuestions(tum.getExam())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }
        //删除考题，返回给客户端信息
        if ("deleteExam".equals(tum.getType())){
            if (sd.serverDeleteExamQuestions(tum.getExam())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }

        }
        //修改考题，返回给客户端信息
        if ("modifyExam".equals(tum.getType())){
            if (sd.serverModifyExamQuestions(tum.getExam())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }
        //查询考题，返回给客户端信息
        if ("queryExam".equals(tum.getType())){
            if (sd.serverQueryExamQuestions(tum.getExam())!=null){
                tum.setType("success");
                tum.setExam(sd.serverQueryExamQuestions(tum.getExam()));
            }else{
                tum.setType("fail");
            }
        }
        //校验学生信息，返回给客户端信息
        if ("checkStudent".equals(tum.getType())){
            if (sd.serverCheckStudent(tum.getUser())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }
        //学员修改密码，返回给客户端信息
        if ("modifyPassword".equals(tum.getType())){
            if (sd.serverModifyPassword(tum.getUser())){
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }
        //开始考试，返回给客户端信息
        if ("startExam".equals(tum.getType())){
            if (sd.serverStartExam()!=null) {
                tum.setType("success");
                tum.setExams(sd.serverStartExam());
            }else{
                tum.setType("fail");
            }
        }
        //提交考试信息，返回给客户端信息
        if ("submitExam".equals(tum.getType())){
            if (sd.serverSubmitExam(tum) == true) {
                tum.setType("success");
            }else{
                tum.setType("fail");
            }
        }
        //查询分数，返回给客户端信息
        if ("queryScore".equals(tum.getType())){
            if (sd.serverQueryScore(tum.getUser())!=null) {
                tum.setType("success");
                tum.setUser(sd.serverQueryScore(tum.getUser()));
            }else{
                tum.setType("fail");
            }
        }
        //将校验结果发送给客户端
        sic.getOos().writeObject(tum);
        sic.getOos().reset();
        System.out.println("服务器发送校验结果成功！");
        return 0;
    }
}